package 尚硅谷多线程1;
/*
* 使用同步方法处理继承Thread类的方式中的线程安全问题
* 关于同步方法的总结：
 * 1. 同步方法仍然涉及到同步监视器，只是不需要我们显示声明。
 * 2. 非静态的同步方法，同步监视器是： this
 * 3. 静态的同步方法，同步监视器是： 当前类本身
* */
 class Window5 extends Thread {
    private static int ticket = 100;

    @Override
    public void run() {
        while (true) {
            show();
        }
    }
       private  static synchronized void show(){//同步监视器:Window5.class
          // private synchronized void show() //同步监视器 ,t1,t2,t3
            if (ticket > 0) {
                System.out.println(Thread.currentThread().getName() + "卖票 票＋" + ticket);
                ticket--;
            }
        }
    }

public class Threadtongbu {
    public static void main(String[] args) {
        Window5 t1 = new Window5();
        Window5 t2 = new Window5();
        Window5 t3 = new Window5();
        t1.setName("线程一");
        t2.setName("线程二");
        t3.setName("线程三");
        t3.start();
        t1.start();
        t2.start();
    }
}

